<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- 最长递增子序列 II -->
    <script>
      /*
        思路：
        开始进行两层循环，外层循环i从1开始遍历到n-1，内层循环j从0开始遍历到i-1。
        对于每对i，j，判断是否满足以下条件1. nums[i]大于nums[j]，即i对应的元素必须比j对应的元素大。
        2.nums[i]-nums[j]的差值必须小于等于k，即这两个数之间的差值必须满足题目中的要求。
        如果上述两个条件都满足，则更新dp[i]为dp[j]+1中的较大值。
        然后比较dp[i]和maxLen，更新maxLen为两者中的较大值。
        最后返回maxLen即为题目要求的最长递增子序列的长度。
      */
      var lengthOfLIS = function (nums, k) {
        const n = nums.length
        const dp = new Array(n).fill(1)
        let maxLen = 1
        for (let i = 1; i < n; i++) {
          for (let j = 0; j < i; j++) {
            if (nums[i] > nums[j] && nums[i] - nums[j] <= k) {
              dp[i] = Math.max(dp[i], dp[j] + 1)
            }
            maxLen = Math.max(maxLen, dp[i])
          }
        }
        return maxLen
      }
      console.log(lengthOfLIS([4, 2, 1, 4, 3, 4, 5, 8, 15], 3))
    </script>
  </body>
</html>
